import { defineStore } from 'pinia'
import stores from '../../stores'
import {
  bindUserSn,
  ifUserSn,
  getAccount,
  getBookListAPi,
} from '@/services/api'
import { tnNavPage } from '@tuniao/tnui-vue3-uniapp/utils'

export const useUserStore = defineStore({
  id: 'app-user',
  state: () => ({
    ifBindSn: null,
    snDetail: {},
    currentAgentId: '',
    currentCgPage: 1,
    currentDrPage: 1,
    avatarUrl: '',
    userInfoObj: {},
    userNickName: '',
    // 标记是否第一次通过扫码绑定
    isFirstBind: false,
    ifBindBook: false, //是否绑定教材
    number_cycles: 0, //循环次数
    sound_people: 1, //发音人 1：男声，2：女声，3：二
    sound_speed: 1, //发音语速 1：2.0倍，2：1.5倍
    ifListenChinese: 1, //是否开启听中文 2：不听，1：听
    sound_order: 1, //播放顺序 1：顺序，2：随机
    bookId: '', //教材id
    myUseBook: {}, //我使用的教材
    ifReadChinese: 2, //是否开启读中文 2：不读，1：读
    ifOnLunch: false, //是否初始化完毕
    bookList: [], //教材列表
  }),
  getters: {
    // 获取我使用的教材
    getMyBindBook(state) {
      return state.myUseBook
    },
    // 获取教材列表
    getBookList(state) {
      return state.bookList
    },
    // 获取是否绑定教材
    getIfOnLunch(state) {
      return state.ifOnLunch
    },
    // 获取是否绑定教材
    getBookId(state) {
      return state.bookId
    },
    // 获取是否绑定教材
    getIfBindBook(state) {
      return state.ifBindBook
    },
    // 循环次数
    getNumber_cycles(state) {
      return state.number_cycles
    },

    // 是否开启听中文
    getIfListenChinese(state) {
      return state.ifListenChinese
    },
    // 是否开启读中文
    getReadChinese(state) {
      return state.ifReadChinese
    },
    // 播放顺序
    getSound_order(state) {
      return state.sound_order
    },
    // 发音语速
    getSound_speed(state) {
      return state.sound_speed
    },
    // 发音人
    getSound_people(state) {
      return state.sound_people
    },
    // 获取 用户信息
    getUserInfoObj(state) {
      return state.userInfoObj
    },
    // 获取是否执行扫码绑定操作并成功
    getIsFirstBind(state) {
      return state.isFirstBind
    },
    // 获取头像
    getAvatarUrl(state) {
      return state.avatarUrl
    },
    // 获取用户名
    getUserNickName(state) {
      return state.userNickName
    },
    getIfBindSn(state) {
      return state.ifBindSn
    },
    getSnDetail(state) {
      return state.snDetail
    },
    getCurrentDrPage(state) {
      return state.currentDrPage
    },
  },
  actions: {
    // 设置我使用的教材
    setMyUseBook(data) {
      this.myUseBook = data
    },

    // 设置教材列表
    async setBookList() {
      const data = await getBookListAPi()
      if (data.code === 200) {
        this.bookList = data.data.bookList
      }
    },
    // 获取是否绑定教材
    setIfOnLunch(status) {
      this.ifOnLunch = status
    },
    // 绑定教材
    setBookId(status) {
      this.bookId = status
    },
    setListenChinese(status) {
      this.ifListenChinese = status
    },
    setReadChinese(status) {
      this.ifReadChinese = status
    },
    setOrder(data) {
      this.sound_order = data
    },
    setSoundSpeed(data) {
      this.sound_speed = data
    },
    setSoundPeople(data) {
      this.sound_people = data
    },

    setNumberCycles(data) {
      this.number_cycles = data
    },
    //查看是否绑定教材
    async checkIfBindBook() {
      // const res = await getAccount()
      // if (res.code === 0) {
      //   this.ifBindBook = res.data.isBindBook
      // }
    },
    cutCurrentCgPage(data) {
      if (data === 1) {
        this.currentCgPage = 1
      } else {
        this.currentCgPage++
      }
    },
    cutCurrentDrPage(data) {
      if (data === 1) {
        this.currentDrPage = 1
      } else {
        this.currentDrPage++
      }
    },
    //查询用户是否绑定过设备SN和更新绑定信息
    // async checkUserSn() {
    //   const res = await ifUserSn()
    //   if (res.code === 0) {
    //     this.ifBindSn = res.data.Binding == 1 ? true : false

    //     this.snDetail = res.data
    //   }
    //   console.log(res)
    // },
    // // 用户绑定设备SN
    // async toBindUserSn(snId: string) {
    //   const res = await bindUserSn(snId)
    //   if (res.code === 0) {
    //     //查看和更新绑定信息
    //     await this.checkUserSn()
    //     // 扫码绑定后
    //     this.isFirstBind = true
    //     // 根据需求跳转至首页选择年级
    //     tnNavPage('/pages/typeStudy/dialogue/index', 'switchTab')
    //     uni.showToast({
    //       title: '绑定成功',
    //       duration: 2000,
    //       icon: 'success',
    //     })
    //     console.log('绑定成功', res)
    //     //绑定成功
    //     return true
    //   }
    //   if (res.code === 1000) {
    //     uni.showToast({
    //       title: res.msg,
    //       duration: 2000,
    //       icon: 'fail',
    //     })
    //     console.log('绑定失败', res)
    //     return false
    //   }
    // },
    //调起微信小程序扫码
    toScanMate() {
      uni.scanCode({
        onlyFromCamera: true, // 默认false，true为只允许从相机扫码
        success: async (res) => {
          console.info(res) //打印出来，查看自己想要的返回结果数据
          // 拿SN码去绑定设备
          await this.toBindUserSn(res.result)
        },
      })
    },
    changeCurrentAgentId(id: Number) {
      this.currentAgentId = id
    },
    //获取用户信息
    async getUserInfo() {
      getAccount().then((res) => {
        const { data, status } = res
        if (status == 'ok') {
          this.userInfoObj = res
          if (data.avatar) {
            this.avatarUrl = data.avatar
          }
          if (data.displayName) {
            this.userNickName = data.displayName
          }
        }
      })
    },
  },
})

// Need to be used outside the setup
export function useUserStoreWithOut() {
  return useUserStore(stores)
}
